package sv.gob.mtps.colectivas.dao;

import java.util.List;

import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import sv.gob.mtps.colectivas.model.TbSolicitante;
import sv.gob.mtps.colectivas.model.TbSolicitudSolicitante;

@Repository
public class SolicitantesDAOImpl implements SolicitantesDAO {
	
	@Autowired
	SessionFactory sessionFactory;

	@Override
	public void addSolicitante(TbSolicitante tbSolicitante) {
		this.sessionFactory.getCurrentSession().save(tbSolicitante);

	}

	@Override
	public void editSolicitante(TbSolicitante tbSolicitante) {
		this.sessionFactory.getCurrentSession().update(tbSolicitante);

	}

	@Override
	public void deleteSolicitante(Integer id) {
		TbSolicitante tbSolicitante = (TbSolicitante) this.sessionFactory.getCurrentSession().load(TbSolicitante.class, id);
		if(tbSolicitante != null){
			this.sessionFactory.getCurrentSession().delete(tbSolicitante);
		}

	}

	@Override
	public TbSolicitante findSolicitante(Integer id) {
		// TODO Auto-generated method stub
		return (TbSolicitante) this.sessionFactory.getCurrentSession().get(TbSolicitante.class, id);
	}

	@Override
	public List<TbSolicitante> listSolicitante() {
		// TODO Auto-generated method stub
		String hql = "from TbSolicitante";
		return this.sessionFactory.getCurrentSession().createQuery(hql).list();
	}
	
	@Override
	public List<TbSolicitante> listSolicitante(String hql) {
		// TODO Auto-generated method stub
		return this.sessionFactory.getCurrentSession().createQuery(hql).list();
	}

	@Override
	public void addSolicitudSolicitante(
			TbSolicitudSolicitante tbSolicitudSolicitante) {
		// TODO Auto-generated method stub
		this.sessionFactory.getCurrentSession().save(tbSolicitudSolicitante);
		
	}

	@Override
	public void editSolicitudSolicitante(
			TbSolicitudSolicitante tbSolicitudSolicitante) {
		// TODO Auto-generated method stub
		this.sessionFactory.getCurrentSession().update(tbSolicitudSolicitante);
		
	}

	@Override
	public void deleteSolicitudSolicitante(Integer id) {
		// TODO Auto-generated method stub
		TbSolicitudSolicitante ss = (TbSolicitudSolicitante) this.sessionFactory.getCurrentSession().load(TbSolicitudSolicitante.class, id);
		if(ss!=null){
			this.sessionFactory.getCurrentSession().delete(ss);
		}
	}

	@Override
	public TbSolicitudSolicitante findSolicitudSolicitante(Integer id) {
		// TODO Auto-generated method stub
		return (TbSolicitudSolicitante) this.sessionFactory.getCurrentSession().get(TbSolicitudSolicitante.class, id);
	}

}
